/*
 * @(#)QtMenuComponentPeer.cc	1.10 06/10/25
 *
 * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
 * 
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License version
 * 2 only, as published by the Free Software Foundation. 
 * 
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License version 2 for more details (a copy is
 * included at /legal/license.txt). 
 * 
 * You should have received a copy of the GNU General Public License
 * version 2 along with this work; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
 * 02110-1301 USA 
 * 
 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
 * Clara, CA 95054 or visit www.sun.com if you need additional
 * information or have any questions. 
 */

#include "QtMenuComponentPeer.h"

QtMenuComponentPeer::QtMenuComponentPeer(JNIEnv *env, jobject thisObj, 
                     QpWidget *menuComponent) : QtPeerBase(NULL,
                                                "QtMenuComponentPeer")
{
    
    this->widget = menuComponent;
    this->peerGlobalRef = env->NewGlobalRef (thisObj);

    if (this->peerGlobalRef == NULL)
        // an exception has been thrown
        return;
}

QtMenuComponentPeer::~QtMenuComponentPeer(void) 
{
    
    if (this->widget != 0) {
        this->widget->deleteLater();
        this->widget = 0;
    }
} 

void
QtMenuComponentPeer::dispose(JNIEnv *env)
{
    if (this->peerGlobalRef != NULL) {
        env->DeleteGlobalRef (this->peerGlobalRef);
        this->peerGlobalRef = NULL;
    }
}

void *
QtMenuComponentPeer::getPeerFromJNI (JNIEnv *env, 
                                     jobject peer,
                                     jfieldID dataFid)
{
    void *peerObj = (void *)env->GetIntField (peer, dataFid);
	
    if (peerObj == 0)
        env->ThrowNew (QtCachedIDs.NullPointerExceptionClass, 
                       "peer object is null");    
    return peerObj;
}

QpWidget *
QtMenuComponentPeer::getWidget(void) const
{
    return this->widget;
}


jobject 
QtMenuComponentPeer::getPeerGlobalRef(void) const
{
    return this->peerGlobalRef ;
}

void 
QtMenuComponentPeer::setFont(QFont font) {
    this->widget->setFont(font);
}
